package com.pomelo.base.core.dao;

/**
 * 数据库数据类型枚举
 *
 * @author biankudingcha
 * @date: 2021-07-23
 * @since 0.5.0
 */
public enum DbDataTypeEnum {

    /**
     * int
     */
    INTEGER("integer", "java.lang.Integer"),

    /**
     * long
     */
    BIGINT("long", "java.lang.Long"),

    /**
     * short
     */
    SMALLINT("short", "java.lang.Short"),

    /**
     * byte
     */
    TINYINT("byte", "java.lang.Byte"),

    /**
     * float
     */
    FLOAT("float", "java.lang.Float"),

    /**
     * double
     */
    DOUBLE("double", "java.lang.Double"),

    /**
     * big
     */
    NUMERIC("big_decimal", "java.math.BigDecimal"),

    /**
     * character
     */
    CHAR("character", "java.lang.Character"),

    /**
     * string
     */
    VARCHAR("string", "java.lang.String"),

    /**
     * boolean
     */
    BIT("boolean", "java.lang.Boolean"),

    /**
     * date
     */
    DATE("date", "java.util.Date"),

    /**
     * timestamp
     */
    TIMESTAMP("timestamp", "java.util.Date"),

    /**
     * blob
     */
    BLOB("blob", "java.sql.Blob");

    /**
     * hibernate类型
     */
    private String hibernateType;

    /**
     * java类型
     */
    private String javaType;

    private DbDataTypeEnum(String hibernateType, String javaType) {
        this.hibernateType = hibernateType;
        this.javaType = javaType;
    }

    /**
     * 获取hibernate类型
     *
     * @return String
     */
    public String getHibernateType() {
        return hibernateType;
    }

    /**
     * 设置hibernate类型
     *
     * @param hibernateType hibernateType
     */
    public void setHibernateType(String hibernateType) {
        this.hibernateType = hibernateType;
    }

    /**
     * 获取java类型
     *
     * @return String
     */
    public String getJavaType() {
        return javaType;
    }

    /**
     * 设置java类型
     *
     * @param javaType javaType
     */
    public void setJavaType(String javaType) {
        this.javaType = javaType;
    }

    /**
     * 根据java类型获取HibernateType
     *
     * @param javaType javaType
     * @return String
     */
    public static String getHibernateType(String javaType) {
        for (DbDataTypeEnum sqlTypeEnum : DbDataTypeEnum.values()) {
            if (sqlTypeEnum.getJavaType().equals(javaType)) {
                return sqlTypeEnum.getHibernateType();
            }
        }
        return null;
    }

}
